home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / ncp_fs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  6.9 KB  |  275 lines

  1. /*
  2.  *  ncp_fs.h
  3.  *
  4.  *  Copyright (C) 1995, 1996 by Volker Lendecke
  5.  *
  6.  */
  7.  
  8. #ifndef _LINUX_NCP_FS_H
  9. #define _LINUX_NCP_FS_H
  10.  
  11. #include <linux/fs.h>
  12. #include <linux/in.h>
  13. #include <linux/types.h>
  14. #include <linux/magic.h>
  15.  
  16. #include <linux/ipx.h>
  17. #include <linux/ncp_no.h>
  18.  
  19. /*
  20.  * ioctl commands
  21.  */
  22.  
  23. struct ncp_ioctl_request {
  24.     unsigned int function;
  25.     unsigned int size;
  26.     char __user *data;
  27. };
  28.  
  29. struct ncp_fs_info {
  30.     int version;
  31.     struct sockaddr_ipx addr;
  32.     __kernel_uid_t mounted_uid;
  33.     int connection;        /* Connection number the server assigned us */
  34.     int buffer_size;    /* The negotiated buffer size, to be
  35.                    used for read/write requests! */
  36.  
  37.     int volume_number;
  38.     __le32 directory_id;
  39. };
  40.  
  41. struct ncp_fs_info_v2 {
  42.     int version;
  43.     unsigned long mounted_uid;
  44.     unsigned int connection;
  45.     unsigned int buffer_size;
  46.  
  47.     unsigned int volume_number;
  48.     __le32 directory_id;
  49.  
  50.     __u32 dummy1;
  51.     __u32 dummy2;
  52.     __u32 dummy3;
  53. };
  54.  
  55. struct ncp_sign_init
  56. {
  57.     char sign_root[8];
  58.     char sign_last[16];
  59. };
  60.  
  61. struct ncp_lock_ioctl
  62. {
  63. #define NCP_LOCK_LOG    0
  64. #define NCP_LOCK_SH    1
  65. #define NCP_LOCK_EX    2
  66. #define NCP_LOCK_CLEAR    256
  67.     int        cmd;
  68.     int        origin;
  69.     unsigned int    offset;
  70.     unsigned int    length;
  71. #define NCP_LOCK_DEFAULT_TIMEOUT    18
  72. #define NCP_LOCK_MAX_TIMEOUT        180
  73.     int        timeout;
  74. };
  75.  
  76. struct ncp_setroot_ioctl
  77. {
  78.     int        volNumber;
  79.     int        namespace;
  80.     __le32        dirEntNum;
  81. };
  82.  
  83. struct ncp_objectname_ioctl
  84. {
  85. #define NCP_AUTH_NONE    0x00
  86. #define NCP_AUTH_BIND    0x31
  87. #define NCP_AUTH_NDS    0x32
  88.     int        auth_type;
  89.     size_t        object_name_len;
  90.     void __user *    object_name;    /* an userspace data, in most cases user name */
  91. };
  92.  
  93. struct ncp_privatedata_ioctl
  94. {
  95.     size_t        len;
  96.     void __user *    data;        /* ~1000 for NDS */
  97. };
  98.  
  99. /* NLS charsets by ioctl */
  100. #define NCP_IOCSNAME_LEN 20
  101. struct ncp_nls_ioctl
  102. {
  103.     unsigned char codepage[NCP_IOCSNAME_LEN+1];
  104.     unsigned char iocharset[NCP_IOCSNAME_LEN+1];
  105. };
  106.  
  107. #define    NCP_IOC_NCPREQUEST        _IOR('n', 1, struct ncp_ioctl_request)
  108. #define    NCP_IOC_GETMOUNTUID        _IOW('n', 2, __kernel_old_uid_t)
  109. #define NCP_IOC_GETMOUNTUID2        _IOW('n', 2, unsigned long)
  110.  
  111. #define NCP_IOC_CONN_LOGGED_IN          _IO('n', 3)
  112.  
  113. #define NCP_GET_FS_INFO_VERSION    (1)
  114. #define NCP_IOC_GET_FS_INFO             _IOWR('n', 4, struct ncp_fs_info)
  115. #define NCP_GET_FS_INFO_VERSION_V2 (2)
  116. #define NCP_IOC_GET_FS_INFO_V2        _IOWR('n', 4, struct ncp_fs_info_v2)
  117.  
  118. #define NCP_IOC_SIGN_INIT        _IOR('n', 5, struct ncp_sign_init)
  119. #define NCP_IOC_SIGN_WANTED        _IOR('n', 6, int)
  120. #define NCP_IOC_SET_SIGN_WANTED        _IOW('n', 6, int)
  121.  
  122. #define NCP_IOC_LOCKUNLOCK        _IOR('n', 7, struct ncp_lock_ioctl)
  123.  
  124. #define NCP_IOC_GETROOT            _IOW('n', 8, struct ncp_setroot_ioctl)
  125. #define NCP_IOC_SETROOT            _IOR('n', 8, struct ncp_setroot_ioctl)
  126.  
  127. #define NCP_IOC_GETOBJECTNAME        _IOWR('n', 9, struct ncp_objectname_ioctl)
  128. #define NCP_IOC_SETOBJECTNAME        _IOR('n', 9, struct ncp_objectname_ioctl)
  129. #define NCP_IOC_GETPRIVATEDATA        _IOWR('n', 10, struct ncp_privatedata_ioctl)
  130. #define NCP_IOC_SETPRIVATEDATA        _IOR('n', 10, struct ncp_privatedata_ioctl)
  131.  
  132. #define NCP_IOC_GETCHARSETS        _IOWR('n', 11, struct ncp_nls_ioctl)
  133. #define NCP_IOC_SETCHARSETS        _IOR('n', 11, struct ncp_nls_ioctl)
  134.  
  135. #define NCP_IOC_GETDENTRYTTL        _IOW('n', 12, __u32)
  136. #define NCP_IOC_SETDENTRYTTL        _IOR('n', 12, __u32)
  137.  
  138. /*
  139.  * The packet size to allocate. One page should be enough.
  140.  */
  141. #define NCP_PACKET_SIZE 4070
  142.  
  143. #define NCP_MAXPATHLEN 255
  144. #define NCP_MAXNAMELEN 14
  145.  
  146. #ifdef __KERNEL__
  147.  
  148. #include <linux/ncp_fs_i.h>
  149. #include <linux/ncp_fs_sb.h>
  150.  
  151. /* define because it is easy to change PRINTK to {*}PRINTK */
  152. #define PRINTK(format, args...) printk(KERN_DEBUG format , ## args)
  153.  
  154. #undef NCPFS_PARANOIA
  155. #ifdef NCPFS_PARANOIA
  156. #define PPRINTK(format, args...) PRINTK(format , ## args)
  157. #else
  158. #define PPRINTK(format, args...)
  159. #endif
  160.  
  161. #ifndef DEBUG_NCP
  162. #define DEBUG_NCP 0
  163. #endif
  164. #if DEBUG_NCP > 0
  165. #define DPRINTK(format, args...) PRINTK(format , ## args)
  166. #else
  167. #define DPRINTK(format, args...)
  168. #endif
  169. #if DEBUG_NCP > 1
  170. #define DDPRINTK(format, args...) PRINTK(format , ## args)
  171. #else
  172. #define DDPRINTK(format, args...)
  173. #endif
  174.  
  175. #define NCP_MAX_RPC_TIMEOUT (6*HZ)
  176.  
  177.  
  178. struct ncp_entry_info {
  179.     struct nw_info_struct    i;
  180.     ino_t            ino;
  181.     int            opened;
  182.     int            access;
  183.     unsigned int        volume;
  184.     __u8            file_handle[6];
  185. };
  186.  
  187. static inline struct ncp_server *NCP_SBP(struct super_block *sb)
  188. {
  189.     return sb->s_fs_info;
  190. }
  191.  
  192. #define NCP_SERVER(inode)    NCP_SBP((inode)->i_sb)
  193. static inline struct ncp_inode_info *NCP_FINFO(struct inode *inode)
  194. {
  195.     return container_of(inode, struct ncp_inode_info, vfs_inode);
  196. }
  197.  
  198. /* linux/fs/ncpfs/inode.c */
  199. int ncp_notify_change(struct dentry *, struct iattr *);
  200. struct inode *ncp_iget(struct super_block *, struct ncp_entry_info *);
  201. void ncp_update_inode(struct inode *, struct ncp_entry_info *);
  202. void ncp_update_inode2(struct inode *, struct ncp_entry_info *);
  203.  
  204. /* linux/fs/ncpfs/dir.c */
  205. extern const struct inode_operations ncp_dir_inode_operations;
  206. extern const struct file_operations ncp_dir_operations;
  207. extern struct dentry_operations ncp_root_dentry_operations;
  208. int ncp_conn_logged_in(struct super_block *);
  209. int ncp_date_dos2unix(__le16 time, __le16 date);
  210. void ncp_date_unix2dos(int unix_date, __le16 * time, __le16 * date);
  211.  
  212. /* linux/fs/ncpfs/ioctl.c */
  213. int ncp_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
  214. long ncp_compat_ioctl(struct file *, unsigned int, unsigned long);
  215.  
  216. /* linux/fs/ncpfs/sock.c */
  217. int ncp_request2(struct ncp_server *server, int function,
  218.     void* reply, int max_reply_size);
  219. static inline int ncp_request(struct ncp_server *server, int function) {
  220.     return ncp_request2(server, function, server->packet, server->packet_size);
  221. }
  222. int ncp_connect(struct ncp_server *server);
  223. int ncp_disconnect(struct ncp_server *server);
  224. void ncp_lock_server(struct ncp_server *server);
  225. void ncp_unlock_server(struct ncp_server *server);
  226.  
  227. /* linux/fs/ncpfs/symlink.c */
  228. #if defined(CONFIG_NCPFS_EXTRAS) || defined(CONFIG_NCPFS_NFS_NS)
  229. extern const struct address_space_operations ncp_symlink_aops;
  230. int ncp_symlink(struct inode*, struct dentry*, const char*);
  231. #endif
  232.  
  233. /* linux/fs/ncpfs/file.c */
  234. extern const struct inode_operations ncp_file_inode_operations;
  235. extern const struct file_operations ncp_file_operations;
  236. int ncp_make_open(struct inode *, int);
  237.  
  238. /* linux/fs/ncpfs/mmap.c */
  239. int ncp_mmap(struct file *, struct vm_area_struct *);
  240.  
  241. /* linux/fs/ncpfs/ncplib_kernel.c */
  242. int ncp_make_closed(struct inode *);
  243.  
  244. #define ncp_namespace(i)    (NCP_SERVER(i)->name_space[NCP_FINFO(i)->volNumber])
  245.  
  246. static inline int ncp_preserve_entry_case(struct inode *i, __u32 nscreator)
  247. {
  248. #ifdef CONFIG_NCPFS_SMALLDOS
  249.     int ns = ncp_namespace(i);
  250.  
  251.     if ((ns == NW_NS_DOS)
  252. #ifdef CONFIG_NCPFS_OS2_NS
  253.         || ((ns == NW_NS_OS2) && (nscreator == NW_NS_DOS))
  254. #endif /* CONFIG_NCPFS_OS2_NS */
  255.                 )
  256.         return 0;
  257. #endif /* CONFIG_NCPFS_SMALLDOS */
  258.     return 1;
  259. }
  260.  
  261. #define ncp_preserve_case(i)    (ncp_namespace(i) != NW_NS_DOS)
  262.  
  263. static inline int ncp_case_sensitive(struct inode *i)
  264. {
  265. #ifdef CONFIG_NCPFS_NFS_NS
  266.     return ncp_namespace(i) == NW_NS_NFS;
  267. #else
  268.     return 0;
  269. #endif    /* CONFIG_NCPFS_NFS_NS */
  270.  
  271. #endif                /* __KERNEL__ */
  272.  
  273. #endif                /* _LINUX_NCP_FS_H */
  274.